package com.bruce.principle.dependenceinversion;


import org.junit.Test;

/**
 * Created by bruce on 2018/10/22 21:42
 */
public class MainTest {

    //如果使用第一种方式,后期想学新的课程,就需要修改BruceLWL类,去添加新方法
    @Test
    public void test1() {
        BruceLWL bruce = new BruceLWL();
        bruce.studyJavaCourse();
        bruce.studyFeCourse();
    }

    //而使用第二种方式,使用接口参数Bruce不需要关心具体的实现类,
    //后期想学习新的课程,就需要添加实现类即可,由上层传入到bruce类即可
    @Test
    public void test2() {
        Bruce bruce = new Bruce();
        bruce.studyCourse(new JavaCourse());
        bruce.studyCourse(new FECourse());
    }

    //方法二的第二种方式是通过方法参数传入,也可以通过构造函数传入
    //缺点是只能传入一个实现类




}
